草庐IT

java treeset 抛出 illegalArgumentException : key out of range

全部标签

c++ - 抛出异常及其消息

我刚开始使用CLion并尝试编写一个简单的程序来了解它的工作原理。我在Windows8+cygwin上,程序是:intmain(){throwstd::exception();}我在控制台中得到了输出:C:\....\bin.exeProcessfinishedwithexitcode0有关程序的消息在哪里被中止或其他原因?什么都没有,我应该如何检测我的程序是否真的因抛出异常而中止? 最佳答案 这样做是因为你没有try和catch并且它发生了一些类似于堆栈的事情。在一个函数中如果你没有catch它会在堆栈中向下移动直到它到达main

c++ - boost::lexical_cast<std::string>(Int_Type) 可以抛出吗?

有没有可能boost::lexical_cast(Int_Type)扔?我唯一能想到的是字符串没有内存的地方,但是还有其他更合理的选择吗? 最佳答案 根据documentation,lexical_cast可以扔bad_lexical_cast.最重要的是,正如您已经提到的,可能存在动态分配,它总是会导致bad_alloc异常。编辑:至于具体情况lexical_cast,除了分配错误之外,链上的任何部分似乎都不太可能失败,但文档并不(据我所知)保证不会出现“错误转换”异常。 关于c++-

C++ 可能在 COM 方法边界处抛出代码

C++异常不能跨越COM模块边界。因此,假设我们在COM方法主体中,并且调用了一些C++可能会抛出的方法/函数(这可能会抛出,因为例如使用了STL类):STDMETHODIMPCSomeComServer::DoSomething(){CppDoSomething();//Q1.上面的代码是可行的实现吗?例如,如果该代码是上下文菜单外壳扩展的一部分,如果C++CppDoSomething()函数抛出C++异常,Explorer会做什么?它是否捕获C++异常并卸载shell扩展?它是否只是按照fail-fast方法使Explorer崩溃(从而可以使用故障转储分析问题)?Q2.这样的实现会

c++ - 为什么 regex_match 抛出 "complexity exception"?

我正在尝试测试(使用boost::regex)文件中的一行是否仅包含由空格分隔的数字条目。我遇到了一个我不明白的异常(见下文)。如果有人能解释为什么抛出它,那就太好了。也许我在这里以定义模式的方式做了一些愚蠢的事情?这是代码://regex_test.cpp#include#include#includeusingnamespacestd;usingnamespaceboost;intmain(){//Mybasicpatterntotestforasinglenumericexpressionconststringnumeric_value_pattern="(?:-|\\+)?[[

c++ - 在 QT 中创建我自己的异常并在函数中抛出异常

我正在尝试在Qt中创建自己的异常类。这是我第一次这样做,我很困惑如何将我的豁免扔到main中调用的函数中。我目前拥有的:myExcption.h#ifndefMYEXCEPTION_H#defineMYEXCEPTION_H#include#includeclassMyException:publicQtConcurrent::Exception{public:voidraise()const{qDebug()现在我如何抛出豁免是这样的:myFuction.hvoidCommands(QStringCommand_in,MyException&wrongInput);myFunctio

c++ - 当对象的当前状态不允许对其进行操作时抛出哪个异常?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion假设我们正在实现一个行为类似于vector的自定义集合,并且我们想让operator[]在集合为空时抛出一些异常。std::vector在这种情况下有未定义的行为,但我们想抛出异常。如果这是C#,我们可能会抛出InvalidOperationException.但是哪个C++exception在这种情况下是最合适/最直观的吗?我觉得std::out_of_range不会是最佳选择,因为集合

c++ - 当用户将字符串存储在 float 变量中时如何抛出异常?

floatinput;cin>>input;//iftheusertypestringininputthenthrowexceptionif(!isdigit(input)){throw"error";}但是isdigit也会为数值抛出异常。如何解决? 最佳答案 floatinput;if(cin>>input){//allisgood...}else{throw"error";}是一种方法。如果输入以数字开头,程序将采用if路径,否则采用else路径。 关于c++-当用户将字符串存储在

c++ - 函数不会抛出 bad_alloc 异常

我正在尝试从Stroustrup的C++PL4书中做一个练习。任务是:Allocatesomuchmemoryusingnewthatbad_allocisthrown.Reporthowmuchmemorywasallocatedandhowmuchtimeittook.Dothistwice:oncenotwritingtotheallocatedmemoryandoncewritingtoeachelement.以下代码不会抛出std::bad_alloc异常。执行程序后,我在终端中收到消息“Killed”。还有。以下代码在~4秒后退出。但是当我取消注释内存使用消息时//++i;

c++ - 抛出的异常中的文本去哪里了?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Howtoprintmessagefromcaughtexception?如果这是基本的或重复的,我深表歉意-我先进行了几次搜索,但没有找到任何答案。如果我做一些基本的事情,比如:throwexception("Thisthingdidn'twork");在哪里可以看到?该字符串不会显示在输出控制台、堆栈跟踪或与项目关联的任何.log文件中。让我想知道如果在任何地方都看不到它,为什么我还要在那里放一根绳子。我当然可以使用堆栈跟踪来查看它在哪里爆炸,但这种做法首先违背了出现异常的目的。在Java中,当我给它一个

c++ - VS COM 项目在 32 位编译但在尝试编译 64 位时抛出错误 C2259

您好,我目前正在运行VisualStudio2010,并且有一个上下文菜单shell扩展在32位机器上完全以32位运行,因此所有方法都存在。这是一个ATL项目。32位上没有错误甚至警告。问题来了。当我进入visualstudio下的配置管理器并将事件解决方案平台从Win32切换到x64并尝试编译时,我收到错误“错误C2259:'ATL::CCOMObject:无法实例化抽象类”。既然这个完全相同的项目确实在32位编译和运行,为什么它会抛出x64的错误?任何想法或正确方向的观点将不胜感激。需要实现的主要方法如下:STDMETHODIMPInitialize(LPCITEMIDLIST,L